/**
 * api/ticket-logs
 */
module.exports = function(app) {
    const router = app.router;
    const Log = app.models.Log;

    /**
     * @apiVersion 1.0.0
     * @apiGroup Ticket
     * @api {get} /ticket-logs 获取角色列表
     * @apiParam {Number} status=ONLINE 上架状态 `0:OFFLINE, 1:ONLINE, 2:DEBUG`
     * @apiParam {Number} locate=home 角色位置 `home, post, ticket, home_ticket: 首页横幅`
     * @apiParam {Number} ticket=image 角色类型 `image, video`
     * @apiParam {Number} since 指定时间，单位秒
     * @apiParam {Number} page_size=20 分页大小
     * @apiParam {Number} page_num=1 页码
     * @apiParam {String} sort=priority-desc 排序，支持 `id-desc, id-asc, priority-desc`
     *
     * @apiParam {Number} status=1 `0:OFFLINE, 1:ONLINE, 2:DEBUG` 上架状态
     * @apiParam {Number} title 标题
     * @apiParam {String} locate 角色位置
     * @apiParam {String} scope 角色范围
     * @apiParam {String} scope_info 角色范围配置
     * @apiParam {String} ticket 角色类型 ``
     * @apiParam {String} asset_url 资源 URL
     * @apiParam {Number} width 宽
     * @apiParam {Number} height 高
     * @apiParam {Number} duration 角色时长，单位毫秒
     * @apiParam {String} url 跳转URL `如果为空则不跳转，其余按 H5内 `openPage.url` 和 全局规则`
     * @apiParam {Number} priority 排序优先级
     * @apiParam {Number} start_time 开始时间，单位秒
     * @apiParam {Number} end_time 结束时间，单位秒
     *
     * @apiSuccess {Number} status 上架状态
     * @apiSuccess {String} locate 角色位置 `home: ticket: recommed: 推荐位`
     * @apiSuccess {String} scope 角色范围
     * @apiSuccess {String} scope_info 角色范围配置
     * @apiSuccess {String} ticket 角色类型
     * @apiSuccess {String} asset_url 资源 URL
     * @apiSuccess {Number} width 宽
     * @apiSuccess {Number} height 高
     * @apiSuccess {Number} duration 角色时长，单位毫秒
     * @apiSuccess {String} url 跳转 URL `如果为空则不跳转，其余按 H5内 `openPage.url` 和 全局规则`
     ** @apiSuccess {Number} params 请求参数
     * @apiSuccess {Number} priority 排序优先级
     * @apiSuccess {Number} start_time 开始时间，单位秒
     * @apiSuccess {Number} end_time 结束时间，单位秒
     *
     * @apiSampleRequest
     */
    router.get('/logs', function *() {
        const query = this.query;

        // @TODO: 支持 scpoe 查询
        const logs = yield Log.query(qb => {
            if(query.ticket_no) {
                qb.leftJoin('tickets', function() {
                    this.on('tickets.id', 'logs.ticket_id');
                });
                qb.where('ticket_no', query.ticket_no);
            }

            if(query.user_id && query.user_id !== 'all') {
                qb.where('creator', query.user_id);
            }
            qb.orderBy('id', 'desc');
        })
        .fetchItems({
            page_size: query.page_size,
            page_num: query.page_num
        }, {
            withRelated: ['ticket', 'user']
        });

        this.body = logs;
    });
};
